<?php

/**
 * Действие по умолчанию для залогиненного пользователя. На самом деле — тоже
 * контроллер, делегирует обработку запроса менеджеру фронтенда.
 *
 */
class Frontend_Action_Default extends Kernel_Controller_Abstract 
{

    /**
     * Метод обработки пользовательского запроса.
     *
     */
    public function process() 
    {
        if (Application::getMode() instanceof Kernel_Mode_Html) {
            Application::getResponse()->setFrameTemplate('_frame/_authorized.tpl');
        }
        
        // руками запускаем фильтр структуры
        parent::_forward(new Frontend_Filter_Structure);
        
        // здесь выполняется поиск и исполнение модуля, который соответствует
        // текущему урлу…
        parent::process();
    }

    /**
     * Возвращает описание компонента, который обработает запрошенное
     * действие, полученное из запроса.
     *
     * @return  Kernel_Token
     */
    protected function _getFilter() 
    {
        $module_name = Frontend_Filter_Structure::get('module');

        $module = Kernel_Module::factory($module_name);

        $manager_name = Frontend_Filter_Structure::get('manager');

        if (!is_object($manager = $module->getManager($manager_name))) {
            $this->_abort('Manager "' . $module_name . '::' . $manager_name . '" not found');
        }
        return $manager;
    }
    
}
